package edu.dali.enterprise_test.dao.mapper.auth;

import edu.dali.enterprise_test.model.vo.Dto;
import edu.dali.enterprise_test.model.vo.SysPermission;
import edu.dali.enterprise_test.model.vo.SysRole;
import edu.dali.enterprise_test.model.vo.UserInfo;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface AuthenticationMapper {
    /**
     * 获取用户信息
     * @param dto
     * @return
     */
    public UserInfo selectUser(Dto dto);



    /**
     * 查询用户
     * @param dto
     * @return
     */
    public List<UserInfo> queryUser(Dto dto);

    /**
     * 查询用户的个数
     * @param dto
     * @return
     */
    public int queryUserCount(Dto dto);

    /**
     * 获取用户的角色列表
     * @param dto
     * @return
     */
    public List<SysRole> selectUserRoles(Dto dto);

    /**
     * 获取所有的角色
     * @param dto
     * @return
     */
    public List<SysRole> getAllRoles(Dto dto);

    /**
     * 获取所有的权限
     * @param dto
     * @return
     */
    public List<SysPermission> getAllPermission(Dto dto);

    /**
     * 获取角色权限列表
     * @param dto
     * @return
     */
    public List<SysPermission> selectRolePermission(Dto dto);

/**
 * ========================用户表操作===========================================
 */
    /**
     * 新增一个用户
     * @param user
     */
    public void insertUserInfo(UserInfo user);

    /**
     * 修改一个用户
     * @param user
     */
    public void updateByUid(UserInfo user);

    /**
     * 删除一个用户
     * @param uid
     */
    public void deleteByUid(Long uid);

    /**
     * ==========================角色表====================================
     */

    /**
     * 添加一个角色
     * @param role
     */
    public void insertRole(SysRole role);

    /**
     * 修改一个角色
     * @param role
     */
    public void updateRoleUser(SysRole role);

    /**
     * 删除一个角色
     * @param id
     */
    public void deleteRoleUser(Long id);

    /**
     * =========================权限表===================================
     */

    /**
     * 添加一个权限
     * @param permission
     */
    public void insertPermission(SysPermission permission);

    /**
     * 修改一个权限
     * @param permission
     */
    public void updatePermission(SysPermission permission);

    /**
     * 删除一个权限
     * @param id
     */
    public void deletePermission(Long id);

    /**
     * =======================用户角色中间表==================================
     */

    /**
     * 新增用户角色
     * @param dto
     */
    public void insertUserRole(Dto dto);

    /**
     * 删除用户角色
     */
    public void deleteUserRole(Dto dto);

    /**
     * ======================角色权限中间表======================================
     */

    /**
     * 新增一个角色的权限
     * @param dto
     */
    public void insertRolePermission(Dto dto);

    /**
     * 删除一个角色的权限
     * @param dto
     */
    public void deleteRolePermission(Dto dto);
}
